RabbitMQ 安装与配置

RabbitMQ 是一个开源的 消息代理(Message Broker),使用 AMQP(高级消息队列协议) 进行消息传递。它广泛用于解耦应用程序、提高系统的可扩展性、可靠性和高效性。RabbitMQ 支持多种协议(如 AMQP、MQTT、STOMP),并提供丰富的客户端支持,适用于各种编程语言。

安装 RabbitMQ

RabbitMQ 是基于 Erlang 开发的,因此安装 RabbitMQ 之前需要先安装 Erlang。

进入RabbitMQ官网

https://www.rabbitmq.com/docs/install-windows#installer

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-fada1dfb

查看对应Erlan的版本

https://www.rabbitmq.com/docs/which-erlang

装之前必须看这页——Erlang 和 RabbitMQ 版本强绑定,别无脑装最新 Erlang,装了多半不兼容)

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-f3f4e004

下载Erlang

https://www.erlang.org/downloads

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-33a06e27

安装Erlang

默认选项,点击“Next"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-ebc6c5da

修改安装文件夹,点击“Next"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-a2e548e7

install

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-e83b2f34

安装完成 “Close"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-6f4b859c

配置Erlang系统环境变量

  • 右键"此电脑"→ 属性 → 高级系统设置 → 环境变量

  • 新建系统变量 ERLANG_HOME,值为安装路径如:D:\develop\Erlang OTP

    2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-912a7849
  • 编辑 Path,添加 %ERLANG_HOME%\bin

    2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-26da9469
  • 重启命令行,执行 erl 可查看erlang版本

    2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-7ee6571d

安装RabbitMQ

默认选项,点击“Next"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-a32fd0dd

修改安装路径,“Next"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-bb3392b3

允许两个提示后,继续"Next"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-1761b6ff

默认勾选启动RabbitMQ服务,点击“Finish"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-933965bf

配置RabbitMQ环境变量

  • 右键"此电脑"→ 属性 → 高级系统设置 → 环境变量

  • 新建系统变量 RABBITMQ_SERVER,值为安装路径如:D:\develop\RabbitMQ Server\rabbitmq_server-4.2.1

    2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-0dc74438
  • 编辑 Path,添加 %RABBITMQ_SERVER%\sbin

    2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-4162f152

启动RabbitMQ服务

当windows服务显示RabbitMQ正在运行,就表示安装成功,如果没有启动,这里需要右键点击启动

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-c983bfbf 2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-22816f9f

可能出现的问题

如果启动时报错“错误1067:进程意外终止”

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-6c746181

应该是端口号“15672”被占用了

先执行:netstat -ano | findstr 15672

然后用我们自定义的killport 15672释放端口

Windows 端口占用排查与释放

启动RabbitMQ管理插件

进入RabbitMQ的sbin目录 cmd

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-ed475fc7 2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-9dea94a5

输入命令rabbitmq-plugins enable rabbitmq_management来启用管理插件,这将允许你通过web界面来管理RabbitMQ

成功安装输出如下:

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-294d49a5

验证RabbitMQ安装:

打开浏览器 访问http://localhost:15672/

无法访问? 问题可能在:RabbitMQ 管理界面(15672)无法访问问题排查与解决

默认的用户名和密码都是guest (注意:guest用户只允许从localhost访问)

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-c2fa3a492-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-eaacbac9

配置远程访问

创建用户

由于guest用户只能本地访问,所以我们需要新增一个admin用户,选中超级管理员权限

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-9dd32044

六种不同的角色配置

角色 查看资源 创建/删除队列 管理策略 policies 管理用户 管理集群/节点 Web 登录
Admin ✔ 全功能
Monitoring ✔ 所有 vhost ✔ 只读
Policymaker ✔ 仅策略
Management ✔(自己的 vhost) ✔ 业务管理
Impersonator 依赖被 impersonate 用户 依赖被 impersonate 用户 依赖 依赖 依赖 很少独立登录
None ✖ 或仅 Overview 可以登录但无界面内容
使用场景 推荐角色
DevOps / 中间件管理员 Admin
查看集群状态的监控系统 Monitoring
设置 TTL/DLX/镜像策略 Policymaker
业务系统自己的 vhost 管理者 Management
APP、微服务连接 RabbitMQ None
API 网关代理 Impersonator

用户授权

此时这个账户是没有权限的,需要授权,点击“admin"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-55017fd5

点击“set permission"和”Set topic permission“

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-8971376a

没问题了

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-b89617c6

Virtual Hosts配置

每个Vhost相当于一个相对独立的RabbitMQ服务器,Vhost用作逻辑隔离,分别管理Exchange、Queue和Binding,使得应用安全地运行在不同的Vhost上,相互之间不会干扰。一个实例下可以有多个Vhost,一个Vhost里可以有若干个Exchange和Queue,生产者和消费者连接RabbitMQ实例时,需要指定一个Vhost。详见:https://www.rabbitmq.com/docs/vhosts

创建Virtual Hosts

在顶部栏选中Admin,进入Admin页面,在右侧导航栏选择”Virtual Host“

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-c9d5a36f

在Add a new virtual host区域 输入Vhost名称 单击 "Add virtual host"

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-ee3766c4 2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-ce259703

创建成功

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-4f30b642

权限分配

点击对应Vhost的名字 进入配置页面

2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-0356d0a9 2-Learning/03-项目筑基/04-工具与环境/03-中间件/assets/image-07804ac7
权限字段 含义 控制的操作 示例 .* 代表什么
Configure regexp 是否允许用户“声明/创建/删除”资源 队列(queue)、交换机(exchange)、绑定 .* = 允许配置所有资源
Write regexp 是否允许用户“写入”消息 发布消息(publish)到 exchange .* = 可向所有交换机 publish
Read regexp 是否允许用户“读取”消息 从 queue 消费消息(consume) .* = 可从所有队列 consume

卸载(想重装/换版本时)

顺序反了会残留服务卸不干净:①rabbitmq-service stop 停服务(或服务面板停)→ rabbitmq-service remove 删服务 → 卸载 RabbitMQ → 再卸 Erlang → 最后手动删 C:\Users\你的用户名\AppData\Roaming\RabbitMQ(数据目录)。


⬅️ Nacos 安装与配置 🏠 00-工具与环境 ➡️ Maven 安装与配置